#ifndef INT_SHCEME_ADAMS_BASHFORTH_COEFF_HPP
#define INT_SHCEME_ADAMS_BASHFORTH_COEFF_HPP

#include <array>

namespace IntScheme {
struct ABCoeff {
  static constexpr int minP = 1;
  static constexpr int maxP = 4;
  static constexpr int s[] = {1, 2, 3, 4};
  static constexpr int offset[] = {0, 2, 5, 9};
  // save from a_n to a_{n-s}
  static constexpr std::array<double, 14> alpha = {1, -1, 1, -1, 0, 1, -1,
                                     0, 0,  1, -1, 0, 0, 0};
  // save from b_n to b_{n-s}
  static constexpr std::array<double, 14> beta = {
      0,          1,        0, 3.0 / 2,   -1.0 / 2,   0,         23.0 / 12,
      -16.0 / 12, 5.0 / 12, 0, 55.0 / 24, -59.0 / 24, 37.0 / 24, -9.0 / 24};
};
} // namespace IntScheme

#endif